/**
 * 发送get异步请求
 * @param {String} url        请求地址
 * @param {String} params     请求参数
 * @param {function} callback 回调函数
 * @param {Object} headers    请求头
 * @param {String} dataType   返回的数据类型
 */
function get(url,params,callback = () => {},headers = {},dataType = 'json'){
    // 一、创建xhr对象
    const xhr = new XMLHttpRequest
    // 二、监控请求状态
    xhr.onreadystatechange = () => {
        // 判断后端是否返回数据
        if(xhr.readyState === 4){
            // 判断返回状态
            if(xhr.status === 200){
                // 获取数据
                let res = xhr.responseText
                switch (dataType) {
                    case 'json':
                        res = JSON.parse(res)
                        break;
                
                    default:
                        break;
                }
                // console.log(res);
                // 不同逻辑处理
                callback(res)
            } else{
                console.log('错误原因：',xhr.status);
            }
        }
    }
    // 三、设置请求方式、请求地址
    xhr.open('get',`${url}?${params}`)

    // 设置请求头
    for(let key in headers){
        xhr.setRequestHeader(key,headers[key])
    }

    // 四、发送请求
    xhr.send(null)
}





/**
 * 发送post异步请求
 * @param {String} url        请求地址
 * @param {String} params     请求参数
 * @param {function} callback 回调函数
 * @param {Object} headers    请求头
 * @param {String} dataType   返回的数据类型
 */
 function post(url,params,callback = () => {},headers = {},dataType = 'json'){
    // 一、创建xhr对象
    const xhr = new XMLHttpRequest
    // 二、监控请求状态
    xhr.onreadystatechange = () => {
        // 判断后端是否返回数据
        if(xhr.readyState === 4){
            // 判断返回状态
            if(xhr.status === 200){
                // 获取数据
                let res = xhr.responseText
                switch (dataType) {
                    case 'json':
                        res = JSON.parse(res)
                        break;
                
                    default:
                        break;
                }
                // console.log(res);
                // 不同逻辑处理
                callback(res)
            } else{
                console.log('错误原因：',xhr.status);
            }
        }
    }
    // 三、设置请求方式、请求地址
    xhr.open('post',url)

    // 设置请求头
    xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
    
    for(let key in headers){
        xhr.setRequestHeader(key,headers[key])
    }

    // 四、发送请求
    xhr.send(params)
}